/**
 *  Classe que representa um Comentario
 *  
 *  @file
 *  @version 1.0
 *
 *  
 *  @section Description
 *  Esta classe representa um Comentario.
 */
#import <Foundation/Foundation.h>
#import "Comments.h"
#import "Project.h"
#import "Action.h"
#import "Problem.h"

@class Project;
@class Comments;
@class Action;
@class Problem;

	/**
	Header para a classe Comment. Esta classe tem o objectivo de encapsular o objecto de acesso a dados Comments. 
	Toda a logica que for necessária de implementar no objecto Comment, extra aquela que o gerador de código criou, deve ser feita nesta
	classe.
	*/
@interface Comment : NSObject <DBInterface>{
		
		/**
		Objecto de acesso a dados Comments. Este objecto tem toda a lógica a nível de acesso a dados para este objecto.
		Tem também a capacidade de automaticamente criar os scripts SQL para efectuar pedidos a BD.
		*/
	@private Comments *comments;
	
	/**
	 Flag para marcar se o objecto foi alterado. 
	 */
	@private bool changed;
	
	/**
	 Flag para marcar se o objecto nao existe na BD. 
	 */
	@private bool isNew;
}

	/**
	Propriedade com o objecto Comments.
	*/ 
@property (readwrite, assign)  Comments *comments;
	
	/**
	Propriedade que indica se o objecto nao existe na BD.
	*/
@property (readwrite)  bool  isNew;

	/**
	Propriedade que indica se este objecto foi alterado desde que foi carregado da BD.
	*/
@property (readwrite)  bool  changed;

	/**
	Construtor a partir do objecto Comments. 
	@param pcomments Comments ao qual este Comment vai estar associado.
	@return Instancia.
	*/
- (id) initWithComments : (Comments *) pcomments;

	/**
	Construtor a partir do objecto Action. 
	@param action Action ao qual este Comment vai estar associado.
	@return Instancia.
	*/
- (id) initWithAction : (Action *) action;
	
	/**
	Construtor a partir do objecto Problem. 
	@param problem Problem ao qual este Comment vai estar associado.
	@return Instancia.
	*/
- (id) initWithProblem : (Problem *) problem;
	
	/**
	Construtor a partir do objecto Project. 
	@param project Projet ao qual este Comment vai estar associado.
	@return Instancia.
	*/
- (id) initWithProject : (Project *) project;

	/**
	@return A Descriçao deste Comment. 
	*/
- (NSString *) getDescription;

	/**
	@return O Owner deste Comment. 
	*/
- (NSString *) getOwner;

	/**
	@return O tempo em segundos desde Janeiro de 1970 até ao valor de Date. 
	*/
- (double) getDate;

	/**
	@param A descriçao deste Comment. 
	*/
- (void) setDescription : (NSString *) description;

@end
